SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spAltaDeAcumulacion]

@agente INT,
@titulo1 INT,
@titulo2 INT,
@cargo INT,
@asignatura INT,
@valor INT

AS

DECLARE @acumulacion INT
DECLARE @error INT
DECLARE @acumulaep VARCHAR(1)

IF @titulo1 = -1 OR @titulo2 = -1 BEGIN
	RAISERROR('Para agregar una Acumulación, primero debe ingresarle los Títulos correspondientes al Agente.',16,1)
END

BEGIN TRANSACTION

IF EXISTS(SELECT * FROM tb_AcumulacionDeTitulos WHERE Titulo1 = @titulo1 AND Titulo2 = @titulo2 AND CargoGenerico = @cargo AND AsignaturaGenerica = @asignatura AND ValorDeAcumulacion = @valor) BEGIN
	SELECT @acumulacion = (SELECT MIN(IdAcumulacion) FROM tb_AcumulacionDeTitulos WHERE Titulo1 = @titulo1 AND Titulo2 = @titulo2 AND CargoGenerico = @cargo AND AsignaturaGenerica = @asignatura AND ValorDeAcumulacion = @valor)
END
ELSE BEGIN
	INSERT INTO tb_AcumulacionDeTitulos(Titulo1, Titulo2, cargogenerico, asignaturagenerica, valordeacumulacion)
	VALUES(@titulo1, @titulo2, @cargo, @asignatura, @valor)
	SELECT @acumulacion = @@IDENTITY

	IF @@ERROR <> 0 BEGIN
		SELECT @error = @@ERROR
		Goto Salir	END
END

IF EXISTS(SELECT * FROM tb_EstudiosParciales WHERE Agente = @agente) BEGIN
	SELECT @acumulaep = 'S'
END
ELSE BEGIN	
	SELECT @acumulaep = 'N'
END

INSERT INTO tb_AcumulaciontitulosDelAgente(Agente, Acumulacion, AcumulacionEstudioParcial)
VALUES(@agente, @acumulacion, @acumulaep)

IF @@ERROR <> 0 BEGIN
	SELECT @error = @@ERROR
	Goto SalirEND

Salir:
IF @Error <> 0
	ROLLBACK TRANSACTION
ELSE
	COMMIT TRANSACTION


GO
